sample_chains Subroutine

public subroutine sample_chains(samplers, xdata, ydata, proposals, targets, niter)

Samples independent chains concurrently using OpenMP. Initialize each target independently, with no shared mutable state in distributions, models, proposals, or sampler callbacks. The compiler runtime must provide thread-safe RANDOM_NUMBER (as GNU Fortran does). Random streams and reproducibility depend on the compiler runtime and thread scheduling; no per-chain seed guarantee is provided.

Arguments

Type IntentOptional Attributes Name
class(mcmc_sampler), intent(inout) :: samplers(:)

One sampler per chain; existing samples are retained as in sample.

real(kind=real64), intent(in) :: xdata(:)

Shared, read-only observations.

real(kind=real64), intent(in) :: ydata(:)

Shared, read-only observations.

class(mcmc_proposal), intent(inout) :: proposals(:)

One independently configured proposal per chain.

class(mcmc_target), intent(inout) :: targets(:)

One independently initialized target per chain.

integer(kind=int32), intent(in), optional :: niter

Iterations per chain; defaults to 10,000.